//-----------------------------------------------------------------------------
//  Copyright (c) 2013 by HangZhou HenqgQiao Design Corporation. All rights reserved.
//
//  Project  : 
//  Module   : over sample the input data with 8-phases 311M clock
//  Parent   : 
//  Children : 
//
//  Description: 
//
//  Parameters:
//  Local Parameters:
//
//  Notes       : 
//
//  Multicycle and False Paths

module OBSI_TOP(
   input                         OBSI_RESET,
   input                         OBSI_SYSCLK77,
   input                         OBSI_SYSFP77,

   output                        OBSI_TXD,
   input                         OBSI_RXD,

   input                         OBDR_0_CLK,
   input                         OBDR_0_IN_FP,
   input[7:0]                    OBDR_0_IN_DATA,
   input                         OBDR_0_IN_DEN,

   input                         OBDR_1_CLK,
   input                         OBDR_1_IN_FP,
   input[7:0]                    OBDR_1_IN_DATA,
   input                         OBDR_1_IN_DEN,

   input                         OBDR_2_CLK,
   input                         OBDR_2_IN_FP,
   input[7:0]                    OBDR_2_IN_DATA,
   input                         OBDR_2_IN_DEN,

   input                         OBDR_3_CLK,
   input                         OBDR_3_IN_FP,
   input[7:0]                    OBDR_3_IN_DATA,
   input                         OBDR_3_IN_DEN,

   output                        OBAD_0_FP,
   output                        OBAD_1_FP,
   output                        OBAD_2_FP,
   output                        OBAD_3_FP,
   output                        OBAD_0_DEN,
   output                        OBAD_1_DEN,
   output                        OBAD_2_DEN,
   output                        OBAD_3_DEN,
   output[7:0]                   OBAD_0_DATA,
   output[7:0]                   OBAD_1_DATA,
   output[7:0]                   OBAD_2_DATA,
   output[7:0]                   OBAD_3_DATA
   );


wire[2:0]                       DSIF_SECTOR_ADDR;
wire[4:0]                       DSIF_BYTE_ADDR;
wire[7:0]                       DSIF_DATA_0;
wire[7:0]                       DSIF_DATA_1;
wire[7:0]                       DSIF_DATA_2;
wire[7:0]                       DSIF_DATA_3;


OBSI_DROP                        INST_0_OBSI_DROP(
   .OBSI_RESET                   (  OBSI_RESET ),

   .OBDR_CLK                     (  OBDR_0_CLK ),
   .OBDR_IN_FP                   (  OBDR_0_IN_FP ),
   .OBDR_IN_DATA                 (  OBDR_0_IN_DATA[7:0] ),
   .OBDR_IN_DEN                  (  OBDR_0_IN_DEN ),

   .OBSI_SYSCLK77                ( OBSI_SYSCLK77 ),
   .DSIF_IN_SECTOR_ADDR          ( DSIF_SECTOR_ADDR[2:0] ),
   .DSIF_IN_BYTE_ADDR            ( DSIF_BYTE_ADDR[4:0] ),
   .DSIF_OUT_DATA                ( DSIF_DATA_0[7:0] )
   );
OBSI_DROP                        INST_1_OBSI_DROP(
   .OBSI_RESET                   (  OBSI_RESET ),

   .OBDR_CLK                     (  OBDR_1_CLK ),
   .OBDR_IN_FP                   (  OBDR_1_IN_FP ),
   .OBDR_IN_DATA                 (  OBDR_1_IN_DATA[7:0] ),
   .OBDR_IN_DEN                  (  OBDR_1_IN_DEN ),

   .OBSI_SYSCLK77                ( OBSI_SYSCLK77 ),
   .DSIF_IN_SECTOR_ADDR          ( DSIF_SECTOR_ADDR[2:0] ),
   .DSIF_IN_BYTE_ADDR            ( DSIF_BYTE_ADDR[4:0] ),
   .DSIF_OUT_DATA                ( DSIF_DATA_1[7:0] )
   );
OBSI_DROP                        INST_2_OBSI_DROP(
   .OBSI_RESET                   (  OBSI_RESET ),

   .OBDR_CLK                     (  OBDR_2_CLK ),
   .OBDR_IN_FP                   (  OBDR_2_IN_FP ),
   .OBDR_IN_DATA                 (  OBDR_2_IN_DATA[7:0] ),
   .OBDR_IN_DEN                  (  OBDR_2_IN_DEN ),

   .OBSI_SYSCLK77                ( OBSI_SYSCLK77 ),
   .DSIF_IN_SECTOR_ADDR          ( DSIF_SECTOR_ADDR[2:0] ),
   .DSIF_IN_BYTE_ADDR            ( DSIF_BYTE_ADDR[4:0] ),
   .DSIF_OUT_DATA                ( DSIF_DATA_2[7:0] )
   );
OBSI_DROP                        INST_3_OBSI_DROP(
   .OBSI_RESET                   (  OBSI_RESET ),

   .OBDR_CLK                     (  OBDR_3_CLK ),
   .OBDR_IN_FP                   (  OBDR_3_IN_FP ),
   .OBDR_IN_DATA                 (  OBDR_3_IN_DATA[7:0] ),
   .OBDR_IN_DEN                  (  OBDR_3_IN_DEN ),

   .OBSI_SYSCLK77                ( OBSI_SYSCLK77 ),
   .DSIF_IN_SECTOR_ADDR          ( DSIF_SECTOR_ADDR[2:0] ),
   .DSIF_IN_BYTE_ADDR            ( DSIF_BYTE_ADDR[4:0] ),
   .DSIF_OUT_DATA                ( DSIF_DATA_3[7:0] )
   );


OBIS_DSIF                        INST_OBIS_DSIF(
   .OBSI_RESET                   ( OBSI_RESET ),

   .OBSI_SYSCLK77                ( OBSI_SYSCLK77 ),
   .OBSI_SYSFP77                 ( OBSI_SYSFP77 ),
 

   .DSIF_OUT_SECTOR_ADDR         ( DSIF_SECTOR_ADDR[2:0] ),
   .DSIF_OUT_BYTE_ADDR           ( DSIF_BYTE_ADDR[4:0] ),
   .DSIF_IN_DATA_0               ( DSIF_DATA_0[7:0] ),
   .DSIF_IN_DATA_1               ( DSIF_DATA_1[7:0] ),
   .DSIF_IN_DATA_2               ( DSIF_DATA_2[7:0] ),
   .DSIF_IN_DATA_3               ( DSIF_DATA_3[7:0] ),

   .OBSI_TXD                     ( OBSI_TXD )
    );





OBSI_ASIF                        INST_OBSI_ASIF(
   .OBSI_RESET                   ( OBSI_RESET ),
   .OBSI_SYSCLK77                ( OBSI_SYSCLK77 ),

 
   .OBSI_RXD                     ( OBSI_RXD ),

   .ASIF_OUT_FP_0                ( OBAD_0_FP ),
   .ASIF_OUT_FP_1                ( OBAD_1_FP ),
   .ASIF_OUT_FP_2                ( OBAD_2_FP ),
   .ASIF_OUT_FP_3                ( OBAD_3_FP ),
   .ASIF_OUT_DEN_0               ( OBAD_0_DEN ),
   .ASIF_OUT_DEN_1               ( OBAD_1_DEN ),
   .ASIF_OUT_DEN_2               ( OBAD_2_DEN ),
   .ASIF_OUT_DEN_3               ( OBAD_3_DEN ),
   .ASIF_OUT_DATA_0              ( OBAD_0_DATA[7:0] ),
   .ASIF_OUT_DATA_1              ( OBAD_1_DATA[7:0] ),
   .ASIF_OUT_DATA_2              ( OBAD_2_DATA[7:0] ),
   .ASIF_OUT_DATA_3              ( OBAD_3_DATA[7:0] )
    );

endmodule


